﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using SIGCBI.Repository;
using SIGCBI.Entities;

namespace SIGCBI.Test.Mantenimientos
{
    [TestClass]
    public class TrabajadorTest
    {
        [TestMethod]
        public void GetAllFromTrabajador()
        {
            TrabajadorRepository repository = new TrabajadorRepository();
            List<TRABAJADOR> actual;
            actual = repository.GetAllFromTrabajador();
            Assert.IsTrue(actual.Count > 1);
        }

        [TestMethod]
        public void GetFromTrabajadorById()
        {
            TrabajadorRepository repository = new TrabajadorRepository();
            int id = 1;
            TRABAJADOR actual;
            actual = repository.GetFromTrabajadorById(id);
            Assert.IsTrue(actual.ID == 1);
        }

        [TestMethod]
        public void GetAllFromTrabajadorByDni()
        {
            TrabajadorRepository repository = new TrabajadorRepository();
            var dni = "47168273";
            TRABAJADOR actual;
            actual = repository.GetFromOnlyTrabajadorByDni(dni);
            Assert.IsTrue(actual.Dni == dni);
            //Assert.IsNotNull(actual);
        }

        [TestMethod]
        public void AddTrabajador()
        {
            TrabajadorRepository repository = new TrabajadorRepository();
            var ListEsperado = (List<TRABAJADOR>)repository.GetAllFromTrabajador();
            TRABAJADOR trabajador = new TRABAJADOR()
            {
                Nombres = "DANY",
                ApeMaterno = "HUAMAN",
                ApePaterno = "VALDIVIA",
                Direccion = "TRES MOLINOS",
                Dni = "47168273",
                Edad = 22,
                Email = "dany.vh@outlook.com",
                FechaNacimiento = DateTime.Now.Date,
                IdEstadoCivil = 1,
                IdSexo = 1,
                FOTO_TRABAJADOR = new FOTO_TRABAJADOR
                {
                    IdTrabajador = 0,
                    Imagen = null,
                    Hash = null
                },
                SEXO = new SEXO 
                {
                    Descripcion = "MASCULINO",
                    ID = 1
                },
                ESTADO_CIVIL = new ESTADO_CIVIL 
                {
                    Descripcion = "SOLTERO",
                    ID = 1
                }

            };
            repository.AddTrabajador(trabajador);
            var ListaCTUAL = (List<TRABAJADOR>)repository.GetAllFromTrabajador();
            Assert.AreEqual(ListEsperado.Count + 1, ListaCTUAL.Count, "Error ");
        }

        [TestMethod]
        public void UpdateTrabajador()
        {
            TrabajadorRepository repository = new TrabajadorRepository();
            var ID = 1;
            var dni = "47168273";

            TRABAJADOR trabajador = new TRABAJADOR()
            {
                ID = 1,
                Nombres = "DANY",
                ApeMaterno = "HUAMAN",
                ApePaterno = "VALDIVIA",
                Direccion = "TRES MOLINOS",
                Dni = "47168273",
                Edad = 22,
                Email = "dany.vh@gmail.com",
                FechaNacimiento = DateTime.Now.Date,
                IdEstadoCivil = 1,
                IdSexo = 1,
                FOTO_TRABAJADOR = new FOTO_TRABAJADOR
                {
                    IdTrabajador = 1,
                    Imagen = null,
                    Hash = null
                },
                SEXO = new SEXO
                {
                    Descripcion = "MASCULINO",
                    ID = 1
                },
                ESTADO_CIVIL = new ESTADO_CIVIL
                {
                    Descripcion = "SOLTERO",
                    ID = 1
                }

            };
            repository.UpdateTrabajador(trabajador);
            var existe = repository.GetFromTrabajadorById(ID);
            Assert.IsTrue(existe.Dni == dni);
        }

   
    }
}
